#ifndef __GlWindowListener_h__
#define __GlWindowListener_h__

#include <windows.h>
#include "GlListener.h"
#include "GlMain.h"

namespace GraphicLibrary
{
	class Window;
	class GlExport WindowListener
		: public Listener<Window>
	{
		public:
			enum ButtonId
			{
				BiLeft,
				BiRight
			};

			virtual ~WindowListener();
			virtual void afterWindowClosed(const MyDistributor *caller);
			virtual void afterMouseDown(const MyDistributor *caller, const ButtonId button, const float x, const float y);
			virtual void afterMouseUp(const MyDistributor *caller, const ButtonId button, const float x, const float y);
			virtual void afterMouseMove(const MyDistributor *caller, const float x, const float y);
			virtual void afterKeyDown(const MyDistributor *caller, const unsigned int key);
			virtual void afterKeyUp(const MyDistributor *caller, const unsigned int key);
	};
}

#endif // __GlWindowListener_h__
